package main

import (
	"crypto/rand"
	"crypto/rsa"
	"crypto/sha256"
)

type Rsa struct {
}

// Encrypt 加密算法
// 调用rsa.EncryptOAEP实现具体的加密逻辑，
//  需要提供公钥以及加密的消息内容
func (r *Rsa) Encrypt(pub *rsa.PublicKey, msg []byte) (encryptedBytes []byte, err error) {
	encryptedBytes, err = rsa.EncryptOAEP(
		sha256.New(),
		rand.Reader,
		pub,
		msg,
		nil)
	return
}

// Decrypt 解密算法
// 调用rsa.DecryptOAEP实现解密逻辑，
// 需要提供私钥以及加密后的内容
func (r *Rsa) Decrypt(pri *rsa.PrivateKey, msg []byte) (encryptedBytes []byte, err error) {
	encryptedBytes, err = rsa.DecryptOAEP(
		sha256.New(),
		rand.Reader,
		pri,
		msg,
		nil)
	return
}
